package com.eastfair.builder.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eastfair.boot.request.PageParams;
import com.eastfair.venueservice.dto.ServiceBookingDTO;
import com.eastfair.venueservice.dto.ServiceBookingQuery;
import com.eastfair.venueservice.dto.ServiceBookingUpdateDTO;
import com.eastfair.venueservice.vo.ServiceBookingVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 报馆记录表
 * </p>
 *
 * @author dq
 * @date 2022-08-06
 */
public interface BuilderServiceBookingService{

    /**
     * 添加服务预订
     * @param serviceBookingDTO serviceBookingDTO
     * @return Boolean
     */
    Boolean addServiceBooking(List<ServiceBookingDTO> serviceBookingDTO);

    /**
     * 添加服务预订（报馆后预订的服务）
     * @param serviceBookingDTO serviceBookingDTO
     * @return Boolean
     */
    Boolean addServiceBookingAfterReport(List<ServiceBookingDTO> serviceBookingDTO);

    /**
     * 保存服务预订
     * @param serviceBookingDTO serviceBookingDTO
     * @return Boolean
     */
    Boolean saveServiceBooking(List<ServiceBookingDTO> serviceBookingDTO);

    /**
     * 服务预订列表
     * @param serviceBookingQuery serviceBookingQuery
     * @return List<ServiceBookingVO>
     */
    List<ServiceBookingVO> queryServiceBookingList(ServiceBookingQuery serviceBookingQuery);

    /**
     * 回填预订服务的审核接口
     * @param serviceBookingDTO serviceBookingDTO
     * @return Boolean
     */
    Boolean updateServiceBookingAuditResult(List<ServiceBookingDTO> serviceBookingDTO);

    /**
     * 报馆提交服务预订
     * @param reportSpaceId reportSpaceId
     * @param reportSpaceAuditId
     * @return Boolean
     */
    Boolean submitServiceBookingWhenReport(Long reportSpaceId, Long reportSpaceAuditId);

    /**
     * 删除预定服务
     * @param serviceBookingDTO serviceBookingDTO
     * @return Boolean
     */
    Boolean delServiceBooking(ServiceBookingDTO serviceBookingDTO);

    /**
     * 取消预定服务
     * @param serviceBookingDTO serviceBookingDTO
     * @return Boolean
     */
    Boolean cancelServiceBooking(ServiceBookingUpdateDTO serviceBookingDTO);

    /**
     * 服务预订管理列表
     * @param serviceBookingQuery serviceBookingQuery
     * @return
     */
    IPage<ServiceBookingVO> queryServiceBookingManage(PageParams<ServiceBookingQuery> serviceBookingQuery);

    /**
     * 主场一键报馆的全部服务
     * @param serviceBookingQuery
     * @return
     */
    Page<ServiceBookingVO> queryServiceBookingOfHome(PageParams<ServiceBookingQuery> serviceBookingQuery);

    /**
     * 主场一键报馆服务
     * @param serviceBookingDTO
     * @return
     */
    Boolean submitServiceBookingToVenue(List<ServiceBookingDTO> serviceBookingDTO);
}
